package db

import (
	"core/corestruct"
	"fmt"
	"gorm.io/gorm"
)

type DbFieldPlugin struct{}

func (op *DbFieldPlugin) Name() string {
	return "dbFieldPlugin"
}

func (op *DbFieldPlugin) Initialize(db *gorm.DB) (err error) {
	// 创建字段的时候雪花算法生成id
	db.Callback().Create().Before("gorm:create").Replace("id", func(db *gorm.DB) {
		var ctx = db.Statement.Context.Value("MyContext")
		ctxv := ctx.(*corestruct.HttpContext)
		fmt.Println(ctxv)
		fmt.Println("****************")

		db.Statement.SetColumn("name", "abcd")

	})

	db.Callback().Update().Before("gorm:update").Register("name", func(db *gorm.DB) {
		var ctx = db.Statement.Context.Value("MyContext")
		ctxv := ctx.(*corestruct.HttpContext)
		fmt.Println(ctxv)
		fmt.Println("****************")

		db.Statement.SetColumn("name", "aaaaaabcd")
		db.Statement.SetColumn("sex", "1")

	})
	//db.Callback().Update().Before("gorm:after_update").Replace("name", func(db *gorm.DB) {
	//	fmt.Println("更新后")
	//	fmt.Println(db.Statement.Model, "当前数据11")
	//
	//})
	return
}
